#include "inc/io.h"
#include "inc/system.h"
#include "inc/irq.h"
#include "inc/system.cpp"
#include "inc/uart.cpp"
#include "inc/uartio.cpp"

volatile int valaa = 0;

class InterFFFace
{
   public:
      virtual int dosth1()=0;
      virtual int dosth2()=0;
      virtual int dosth3()=0;
   int value;
};

class Aaa : public InterFFFace
{
  public:
    int dosth1(){
      putc('a');
    }
    int dosth2(){
      putc('b');
    }
    int dosth3(){
      putc('c');
    }

};

class Bbb : public InterFFFace
{
  public:
    int dosth1(){
      putc('x');
    }
    int dosth2(){
      putc('y');
    }
    int dosth3(){
      putc('z');
    }

};

void test(InterFFFace* a){
  a->dosth1();
  a->dosth2();
  a->dosth3();
}

int main(){
  stdioInit(1024);

  Aaa* a = new Aaa();
  a->value = 123;
  //a->A();
  test(a);
  
  Bbb* b = new Bbb();
  b->value = 123;
  //a->A();
  test(b);
  
  while(1){
  }

}
